package jdkObserver;

/**
 * @Author: linKe
 * @Date: 2022/1/15 11:33
 * @FileName: Client
 * @version: 1.0
 * @Description: 基于jdk底层实现的观察者模式调用
 * observer观察者模式测试类
 */
public class Client {
    public static void main(String[] args) {
        // 创建观察对象
        Subject subject = new Subject();
        // 观察对象传入
        // 将一个观察者添加到该对象的观察者集合中，前提是它与集合中的某个观察者不同。
        // 未指定将通知传递给多个观察者的顺序。
        new DogObserver(subject);
        new CatObserver(subject);

        // 观察行为干预
        subject.setNews("测试");
        /*
        执行通知更新方法,调用update
        如果该对象发生了变化，如hasChanged方法所示，则通知其所有观察者，
            然后调用clearChanged方法以指示该对象不再更改。
            每个观察者都有自己的update方法，使用两个参数调用：
            这个 observable 对象和null 。
            换句话说，这个方法等价于：通知观察者（空)
         */
        subject.notifyObservers();
    }
}
